#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <cassert>


#include "element.H"
#include "skiplist.H"
#include "tab_dynamique.H"
#include "Intervalle.H"


using namespace std;

int main(int argc,char **argv)
{
   
    FILE* fichier_temps_insertion, *fichier_temps_recherche;
    srand (12);
    int nb_elem ,B_elem,alea;
    clock_t start, finish;
    double temps ;
    //bool test;



    fichier_temps_insertion = fopen("performace1.txt", "w");
	assert( fichier_temps_insertion);
	fichier_temps_recherche = fopen("performance2.txt", "w");
	assert( fichier_temps_recherche);
	fprintf(fichier_temps_insertion, "# \"nb insertion\" \"temps\"\n");
	fprintf(fichier_temps_recherche, "# \"nb_recherche\" \"temps\"\n");
    for(nb_elem=1000;nb_elem<32000;nb_elem+=nb_elem)
    {
        SListe *liste = CreationListe();
        // calcul temps pour insertion de nb_elem
        start=clock();
        for (int i =0;i<nb_elem;i++)
        {
            insereElement(liste,i);
        }
        finish = clock();
        temps=double (finish-start)/CLOCKS_PER_SEC;
        fprintf( fichier_temps_insertion, "%d %f\n",nb_elem, temps);
        printf("temps d insertion des %d elements est de %f \n",nb_elem,temps);

        // calcul du temps pour rechercher B elemnt
        B_elem=rand()%nb_elem;
        start=clock();
        for (int j=0;j<B_elem;j++)
        {
            alea=rand()%nb_elem;
            rechercheElementSListe(liste,alea);
//            if(test==true)
//                cout<<alea<<" est dans la liste"<<endl;
        }
        finish = clock();
        temps=double (finish-start)/CLOCKS_PER_SEC;
        fprintf( fichier_temps_recherche, "%d %f\n",B_elem, temps);
        printf("temps de recherche des %d elements est de %f \n",B_elem,temps);

        testamentSListe(liste);
    }


   
/*
    srand (50);
    SListe *liste = CreationListe();
    insereElement(liste,5);
    insereElement(liste,2);
    insereElement(liste,50);
    insereElement(liste,96);
    insereElement(liste,66);
    insereElement(liste,1);
    insereElement(liste,5200);
    insereElement(liste,0);

    SCellule *tmp = rechercheElementSListe(liste,5);
    afficheSCellule(tmp);
    afficheSListe(liste);

    testamentSListe(liste);
    return 0 ;*/

//Test du module Intervalle
	
	Reel borneinf=3.7;
	Reel bornesup=5.9;
	Intervalle I ;
	Intervalle Itest;
	/*
	 
	initialisationIntervalle(I,borneinf,bornesup);//probleme
	
	afficheIntervalle(I);
	//printf("INITIALISATIONINTERVALLE: OKKK!!!!\n");
	initialisationIntervalle(Itest,20,30);
	affectationIntervalle(I,Itest);
	printf("AFFECTATIONINTERVALLE: OKKK!!!!\n");
	afficheIntervalle(Itest);*/
		
 return 0;


}







//// main
////TEST
//
// /* initialize random seed: */
//    srand (time(NULL));
//    SListe *liste = CreationListe();
//    afficheSListe(liste);
//
//    Elem val =0 ;
//    SCellule *cellule[15] ;
//
//    for (int i=0 ;i<15;i++)
//        {
//            val=rand()%100+1;
//            cellule[i]=initialiserSCellule(val);
//            initialiserSCellulePF(cellule[i]);
//            insereElement(liste , cellule[i]);
//        }
//    cellule[15]=initialiserSCellule(18);
//    initialiserSCellulePF(cellule[15]);
//    insereElement(liste,cellule[15]);
//   // afficheSListe(liste);
//
//    afficheSCellule(cellule[15]);
//
//    //supprimeElementSkiplist(liste,18);
//
//
//    //afficheSListe(liste);
//
////    for(int i=0;i<15;i++)
////        {
////            testamentSCellule(cellule[i]);
////        }
//    testamentSListe(liste);
//    //delete (liste);
//    return 0;

